#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2025/10/27 23:57
# @Author  : summer
# @Email   : 610658552@qq.com
# @File    : filter_wechat_template.py
# @Software: PyCharm
# @Desc    :
import django_filters
from common.utils.common import strip_filter
from wechat.models import WechatTemplate


class WechatTemplateFilter(django_filters.FilterSet):
    """
    WechatTemplate表过滤器：
    支持模板标题、微信AppID、微信模板ID的模糊查询，及启用状态的精确查询
    """
    # 模板标题：模糊查询（忽略大小写），去空格处理
    name = django_filters.CharFilter(lookup_expr='icontains', method='filter_name')
    # 微信AppID：模糊查询，去空格处理
    wx_app_id = django_filters.CharFilter(lookup_expr='icontains', method='filter_wx_app_id')
    # 微信模板ID：精确查询（模板ID唯一，无需模糊）
    template_id = django_filters.CharFilter(lookup_expr='exact', method='filter_template_id')
    # 启用状态：精确匹配（0=关闭，1=开启）
    is_active = django_filters.NumberFilter(field_name='is_active', lookup_expr='exact')
    # 模板标题：模糊查询（忽略大小写），去空格处理
    description = django_filters.CharFilter(lookup_expr='icontains')

    def filter_name(self, queryset, name, value):
        """模板标题过滤：去空格后模糊匹配"""
        value = strip_filter(value)
        return queryset.filter(name__icontains=value) if value else queryset

    def filter_wx_app_id(self, queryset, name, value):
        """微信AppID过滤：去空格后模糊匹配"""
        value = strip_filter(value)
        return queryset.filter(wx_app_id__icontains=value) if value else queryset

    def filter_template_id(self, queryset, name, value):
        """微信模板ID过滤：去空格后精确匹配"""
        value = strip_filter(value)
        return queryset.filter(template_id=value) if value else queryset

    class Meta:
        model = WechatTemplate
        fields = ['name', 'wx_app_id', 'template_id', 'is_active', 'is_delete']

    @property
    def qs(self):
        """默认只返回「未删除+非压测」的有效配置，与BaseModel逻辑对齐"""
        parent_qs = super().qs
        return parent_qs.filter(is_delete=0, pt_flag=0)